package io;

import java.io.*;
import java.util.Scanner;

/**
 *  记事本工具
 *  程序启动后,要求用户输入一个文件名,然后对该文件进行写操作.
 *  之后用户输入的每一行字符串都按行写入到文件中
 *  但用户单独输入exit时,程序退出
 *
 *  要求:自行组建流链接.
 */
public class PWDemo3 {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        File file = null;
        while (true) {
            System.out.println("请输入文件名:");
            String fileName = sc.nextLine();
            file = new File(fileName);
            if (file.exists()){
                System.out.println("文件已存在,请重新输入.");
                continue;
            }
            break;
        }
        try (
                /*
                    创建PrintWriter时,如果构造方法参数第一个为一个流时,
                    就支持再传入一个boollean型的参数,该值为true则具有自动行刷新功能
                    自动行刷新:
                    每当我们使用println方法写出一行字符串会自动flush(冲,弗拉徐)
                    print方法写出内容后并不会自动刷新!!
                 */
                PrintWriter pw = new PrintWriter(
                        new BufferedOutputStream(
                                new ObjectOutputStream(
                                        new FileOutputStream(file)
                                )
                        ),true
                )
        ){
            System.out.println("请输入文本内容,单独输入exit时退出");

            while (true){
                String line = sc.nextLine();
                //变量放前面的话,如果变量因为一些方法值为null 就会出现空指针异常
                if ("exit".equals(line)){
                    break;
                }
                pw.println();

            }

        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}
